﻿using System;
using System.Collections.Generic;

using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.Text;
using System.Xml;
using WLMCoreLibrary;
using MiWebSite_Core;

namespace MWS_AddDirectory.NuevoAnuncio.Mobil
{
    public partial class Default : System.Web.UI.Page
    {
        public dbConnector ConexionDB;
        public WebSiteMainConfiguration config;
        protected void Page_Load(object sender, EventArgs e)
        {
            config = WebSiteMainConfiguration.GetConfig();
            ConexionDB = new dbConnector(config.Connections["WebSite"].value);
            if (!IsPostBack)
            {
                AnuncioTipoCollection tiposAnuncios = new AnuncioTipoCollection(ref ConexionDB);
                IdTipoAnuncio.DataTextField = "NombreTipoAnuncio";
                IdTipoAnuncio.DataValueField = "id";
                IdTipoAnuncio.DataSource = tiposAnuncios.Elementos;
                IdTipoAnuncio.DataBind();
                NegocioPuntoMapa.Value = DeCurrentDomain.MapPoint.Replace("(", "").Replace(")", "").Replace(" ", "");
            }
            if (Request.QueryString["original"] != null)
            {
            }
            else
            {
                if (Request.QueryString["xml"] != null)
                {
                    GenerarXML();
                }
                else
                {
                    TransformarXML();
                }
            }

        }

        protected void GenerarXML()
        {
            MiWebSitePage pagina = new MiWebSitePage(ref ConexionDB);
            pagina.Title = "Directorio de " + DeCurrentDomain.Ciudad;
            pagina.DomainName = DeCurrentDomain.DomainName;
            pagina.DomainName = DeCurrentDomain.DomainName;
            pagina.DomainID = DeCurrentDomain.IdentificadorDominio;
            XmlDocument xml = new XmlDocument();
            xml.LoadXml("<MiWebSiteContent><Contenido><![CDATA[<div id='panelAltaAnuncio'>.</div> <script>$('#panelAltaAnuncio').load('/NuevoAnuncio/?original=true')</script> ]]></Contenido></MiWebSiteContent>");
            pagina.Contenido = xml;
            Response.ContentType = "text/xml";
            Response.Write(WLMFunctions.SerializeObject(pagina, true));
            Response.End();
        }

        protected void TransformarXML()
        {            
            List<ParametroTransformacionXML> parametros = new List<ParametroTransformacionXML>();
            parametros.Add(new ParametroTransformacionXML("skinPath", config.Settings["skinPath"].value));
            parametros.Add(new ParametroTransformacionXML("isMobile", MiWebSiteFunctions.isMobileBrowser().ToString().ToLower()));
            parametros.Add(new ParametroTransformacionXML("MapsAPIKey", DeCurrentDomain.MapsApiKey));
            parametros.Add(new ParametroTransformacionXML("MapPoint", DeCurrentDomain.MapPoint));
            parametros.Add(new ParametroTransformacionXML("DirectoryCity", DeCurrentDomain.Ciudad));
            parametros.Add(new ParametroTransformacionXML("idParentDomain", DeCurrentDomain.idParentDomain.ToString()));
            parametros.Add(new ParametroTransformacionXML("dedomainname", DeCurrentDomain.DomainName));
            parametros.Add(new ParametroTransformacionXML("desubdomainname", DeCurrentDomain.SubDomain));
            parametros.Add(new ParametroTransformacionXML("dedomainCity", DeCurrentDomain.Ciudad));
            parametros.Add(new ParametroTransformacionXML("twitterAccount", DeCurrentDomain.twitterAccount));
            parametros.Add(new ParametroTransformacionXML("facebookAccount", DeCurrentDomain.facebook));

            if (DeCurrentDomain.SubDomain != "www")
            {
                parametros.Add(new ParametroTransformacionXML("subDomainSystemName", new Categoria(DeCurrentDomain.SubDomain, true, ref ConexionDB).nombreCategoria));
            }

            DominioDirectorio.Text = DeCurrentDomain.DomainName;
            string urlPageXML = "http://" + DeCurrentDomain.SubDomain + "." + DeCurrentDomain.DomainName + "/nuevoAnuncio/?xml=true";
            string HTMLPagina = WLMFunctions.TransformXML(urlPageXML, config.Settings["siteURL"].value + config.Settings["skinPath"].value + "index.xsl", parametros);
            Response.Write(HTMLPagina);
            Response.End();
        }

        protected void AgregarRegistro()
        {
            
            if (WLMFunctions.IsValidEmailAddress(Request["email"].ToString()))
            {
                string emailCliente = Request["email"].ToString().Trim();
                string urlSalida = "";
                Cliente cliente = new Cliente(emailCliente, ref ConexionDB);
                if (cliente.id == 0)
                {
                    cliente = new Cliente(ref ConexionDB);
                    cliente.email = emailCliente;
                    cliente.Nombre = Request["nombre"];
                    cliente.Direccion = Request["direccion"];
                    cliente.Colonia = Request["colonia"];
                    cliente.Municipio = Request["municipio"];
                    cliente.Estado = Request["estado"];
                    cliente.CP = Request["CP"];
                    cliente.RazonSocial = Request["nombre"];
                    string password = WLMFunctions.CreateRandomPassword(15);
                    string salt;
                    string hash;
                    SaltedHash hasher = new SaltedHash();
                    hasher.GetHashAndSaltString(password, out hash, out salt);
                    cliente.salt = salt;
                    cliente.password = hash;
                    cliente.Save();                   
                }
                

                Anuncio directorio = new Anuncio(ref ConexionDB);
                directorio.idCliente = cliente.id;
                directorio.nombre = Request["nombre"];
                directorio.direccion = Request["direccion"];
                directorio.colonia = Request["colonia"];
                directorio.municipio = Request["municipio"];
                directorio.estado = Request["estado"];
                directorio.CP = Request["CP"];
                directorio.horario = Request["horario"];
                directorio.telefono = Request["telefono"];
                directorio.email = emailCliente;
                directorio.website = Request["website"];
                directorio.descripcionMini = Request["descripcion"];
                directorio.ListaCategorias = Request["dropCategorias[]"];
                directorio.ListaTags = Request["dropTags[]"];
                directorio.idImagen = Convert.ToInt32(idImagenAnuncio.Value);
                directorio.mapa = NegocioPuntoMapa.Value;
                try
                {
                    string[] latLan = null;
                    latLan = directorio.mapa.Replace("(", "").Replace(")", "").Split(',');
                    directorio.Latitud = Convert.ToDouble(latLan[0]);
                    directorio.Longitud = Convert.ToDouble(latLan[1]);
                }
                catch
                {
                }
                directorio.idTipoAnuncio = Convert.ToInt32(IdTipoAnuncio.SelectedValue);
                directorio.IdComunidad = DeCurrentDomain.IdentificadorDominio;
                directorio.URL = MiWebSiteFunctions.tituloaPostName(directorio.nombre);


                directorio.Save(true);
                directorio.PublicarEnTwitter();
                urlSalida = "/" + directorio.FullURL;
Response.Write("con Anuncio");
            //Response.End();
                Anuncio2dominio relacion = new Anuncio2dominio(ref ConexionDB);
                relacion.idAnuncio = directorio.id;
                relacion.idDominio = DeCurrentDomain.IdentificadorDominio;
                relacion.Save();
               
               
                ConexionDB.CloseConnection();
                Response.Write(urlSalida + Request["dropTags[]"] + Request["dropCategorias[]"]);
                Response.End();
            }

        }

        protected void ENVIARDATOS_Click(object sender, EventArgs e)
        {
            AgregarRegistro();
        }
    }
}